package com.springboot.demo.service;


import com.springboot.demo.model.par.WechatPayPar;
import com.springboot.demo.model.vo.WechatLoginVo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 微信服务类
 * Created by hwm on 2018/6/27.
 */
public interface WechatService {

    /**
     * 微信登陆
     * 说明：https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html
     * 小程序调用wx.login() 获取 临时登录凭证code ，并回传到开发者服务器。
     * <p>
     * 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key。
     * <p>
     * 之后开发者服务器可以根据用户标识来生成自定义登录态，用于后续业务逻辑中前后端交互时识别用户身份。
     *
     * @param code
     * @return
     */
    WechatLoginVo wechatLogin(String code);

    /**
     * 微信支付回调
     * 说明：https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7&index=8
     *
     * @param request
     * @param response
     * @return
     * @Title: wechatNotify
     */
    void wechatNotify(HttpServletRequest request, HttpServletResponse response) throws Exception;

    /**
     * 生成预支付订单号
     * 说明：https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
     *
     * @param wechatPayPar 参数
     * @return
     */
    Map<String, String> wechatPay(WechatPayPar wechatPayPar, HttpServletRequest request);
}
